package uy.org.softtech.cssuite.web.entidad;

import java.io.Serializable;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;

/**
 * Representa la geolocalización de un cliente para mostrar en el header de la aplicación (retornado de un servicio público en formato JSON).
 * 
 *  <pre>
 * {
 * 	"ip":"201.217.153.154",
 * 	"country_code":"UY",
 * 	"country_name":"Uruguay",
 * 	"region_code":"10",
 * 	"region_name":"Montevideo",
 * 	"city":"Montevideo",
 * 	"zipcode":"",
 * 	"latitude":-34.8581,
 * 	"longitude":-56.1708,
 * 	"metro_code":"",
 * 	"areacode":""
 * } 
 *  </pre>
 * 
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class Geolocalizacion implements Serializable {

	private static final long serialVersionUID = -137357318110211615L;

	@JsonProperty(value = "ip")
	private String direccion = "";
	
	@JsonProperty(value = "city")
	private String ciudad = "";
	
	@JsonProperty(value = "latitude")
	private String latitud = "";
	
	@JsonProperty(value = "longitude")
	private String longitud = "";
	
	@JsonProperty(value = "region_code")
	private String region = "";
	
	@JsonProperty(value = "region_name")
	private String nombreRegion = "";
	
	@JsonProperty(value = "country_code")
	private String pais = "";
	
	@JsonProperty(value = "country_name")
	private String nombrePais = "";
	
	@JsonProperty(value = "zipcode")
	private String codigoPostal = "";
	
	/*
	 *  GETTERS
	 */
	public String getDireccion() {
		return direccion;
	}
	public String getCiudad() {
		return ciudad;
	}
	public String getLatitud() {
		return latitud;
	}
	public String getLongitud() {
		return longitud;
	}
	public String getRegion() {
		return region;
	}
	public String getNombreRegion() {
		return nombreRegion;
	}
	public String getPais() {
		return pais;
	}
	public String getNombrePais() {
		return nombrePais;
	}
	public String getCodigoPostal() {
		return codigoPostal;
	}
	
	/*
	 *  SETTERS
	 */
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public void setCiudad(String ciudad) {
		this.ciudad = ciudad;
	}
	public void setLatitud(String latitud) {
		this.latitud = latitud;
	}
	public void setLongitud(String longitud) {
		this.longitud = longitud;
	}
	public void setRegion(String region) {
		this.region = region;
	}
	public void setNombreRegion(String nombreRegion) {
		this.nombreRegion = nombreRegion;
	}
	public void setPais(String pais) {
		this.pais = pais;
	}
	public void setNombrePais(String nombrePais) {
		this.nombrePais = nombrePais;
	}
	public void setCodigoPostal(String codigoPostal) {
		this.codigoPostal = codigoPostal;
	}

	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("Geolocalizacion [");
		builder.append("direccion=" + getDireccion() + ", ");
		builder.append("ciudad=" + getCiudad() + ", ");
		builder.append("latitud=" + getLatitud() + ", ");
		builder.append("longitud=" + getLongitud() + ", ");
		builder.append("region=" + getRegion() + ", ");
		builder.append("nombreRegion=" + getNombreRegion() + ", ");
		builder.append("pais=" + getPais() + ", ");
		builder.append("nombrePais=" + getNombrePais() + ", ");
		builder.append("codigoPostal=" + getCodigoPostal());
		builder.append("]");
		return builder.toString();
	}
}
